package cn.fws.meap.user.mapper;

import cn.fws.meap.user.entity.User;
import cn.fws.meap.user.vo.UserAnswerListVo;
import cn.fws.meap.user.vo.UserDetailsVo;
import cn.fws.meap.user.vo.UserReplyListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 个人用户 数据层
 * 
 * @author chenkh
 * @date 2019-03-07
 */
@Mapper
public interface UserMapper {
	/**
     * 查询个人用户信息
     * 
     * @param id 个人用户ID
     * @return 个人用户信息
     */
	public UserDetailsVo selectById(String id);

	/**
	 * 查询个人用户信息
	 *
	 * @param openid 小程序唯一openid
	 * @return 个人用户信息
	 */
	public User selectByOpenId(String openid);

	/**
     * 查询个人用户列表
     * 
     * @param user 个人用户信息
     * @return 个人用户集合
     */
	public List<User> selectList(User user);
	
	/**
     * 新增个人用户
     * 
     * @param user 个人用户信息
     * @return 结果
     */
	public int insert(User user);
	
	/**
     * 修改个人用户
     * 
     * @param user 个人用户信息
     * @return 结果
     */
	public int update(User user);
	
	/**
     * 删除个人用户
     * 
     * @param id 个人用户ID
     * @return 结果
     */
	public int deleteById(String id);
	
	/**
     * 批量删除个人用户
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteByIds(String[] ids);

	/**
	 * 根据openID获取用户昵称
	 * @param openId
	 * @return
	 */
	public String getNickNameByOpenId(String openId);

	/**
	 * 根据openId获取用户头像
	 * @param openId
	 * @return
	 */
	public String getUserPictureByOpenId(String openId);

	/**
	 * 查询点赞头像
	 * @param articleId
	 * @return
	 */
	public List<User> getEvaluatePictrueList(String articleId);

	/**
	 * 修改账户绑定
	 * @param openId
	 * @param isBindEnums
	 * @return
	 */
    int updateBind(@Param("openId") String openId,@Param("isBindEnums") String isBindEnums);

	/**
	 * 获取用户内容
	 * @param itOpenId
	 * @return
	 */
	UserDetailsVo selectUserInformation(String itOpenId);

	/**
	 * 个人回复
	 * @param openId
	 * @return
	 */
    List<UserReplyListVo> selectUserReplyList(String openId);

	/**
	 * 个人回答
	 * @param openId
	 * @return
	 */
	List<UserReplyListVo> selectUserAnswerList(String openId);

	/**
	 * 获取用户的粉丝
	 * @param clickOpenid 点击用户详情的id
	 * @param selfOpenid 当前用户id
	 * @return
	 */
    List<UserDetailsVo> selectUserFansList(@Param("clickOpenid") String clickOpenid,@Param("selfOpenid") String selfOpenid);

	/**
	 * 获取关注的用户
	 * @param clickOpenid 点击用户详情的id
	 * @param selfOpenid 当前用户id
	 * @return
	 */
	List<UserDetailsVo> selectUserConernList(@Param("clickOpenid") String clickOpenid,@Param("selfOpenid")String selfOpenid);
}